/*****************************
 *@file: AtkBuff
 *@author: 陈吕唐
 *@desc: 攻击力BUFF (属性BUFF模版)
 *@date: 2024-03-16	16:34
 *****************************/
import { _decorator } from 'cc';
import { BaseBuff } from './BaseBuff';
import IBaseBuffDTO from './IBaseBuffDTO';
const { ccclass, property } = _decorator;

@ccclass('AtkBuff')
export class AtkBuff extends BaseBuff {
    /****************************************************************************************************************
     *Readonly 常量
     ****************************************************************************************************************/
    /****************************************************************************************************************
     *Property 定义变量
     ****************************************************************************************************************/

    /**
     * 加成剩余时间(秒)
     */
    private _time: number = 0;
    /****************************************************************************************************************
     * Public/External 方法
     ****************************************************************************************************************/
    /****************************************************************************************************************
     * Lifecycle 生命周期相关方法
     ****************************************************************************************************************/
    protected update(dt: number): void {
        this.time -= dt;
    }

    protected lateUpdate(dt: number): void {
        if (this.time <= 0) {
            this.removeBuff();
        }
    }

    protected onDisable(): void {
        this.removeBuff();
    }
    /****************************************************************************************************************
     * Public 公有方法
     ****************************************************************************************************************/
    public override applyBuff(value: IBaseBuffDTO): void {
        super.applyBuff(value);
        this.value = value.value;
        this.character.atk += value.value;
    }

    public override removeBuff(): void {
        super.removeBuff();
        this.character.atk -= this.value;
        this.value = 0;
    }
    /****************************************************************************************************************
     * private 私有方法
     ****************************************************************************************************************/
    /****************************************************************************************************************
     * Property Get && Set 属性的 get && set 函数
     ****************************************************************************************************************/
    public get time(): number {
        return this._time;
    }
    public set time(value: number) {
        this._time = value;
    }
}


